package tasksimulator;

import java.util.Date;
import java.util.Random;

/**
 *
 * @author Jonas
 */
public class Task {
    private static long globalKey;
    long key;
    long activityId;
    int processor;
    int exitStatus;
    String commandLine;
    String workspace;
    String error;
    String output;
    Date start;
    Date end;
    String status;
    static Random r = new Random(TaskSimulator.seed);
    
    /**
     * Como vamos rodar em um banco distribuído, porém as aplicações que rodam
     * as consutlas serão centralizadas, as chaves entre as aplicações não
     * podem colidir. Dessa forma, temos que setar uma chave inicial para cada
     * programa, para que não gerem chaves iguais.
     * @param key 
     */
    public static void setStartingKey(long key) {
        Task.globalKey = key;
    }
    
    public static Task nextTask() {
        Task task = new Task();
        task.key = Task.nextKey();
        task.activityId = Math.abs(r.nextLong());
        task.processor = r.nextInt(8);
        task.exitStatus = r.nextInt(128);
        task.commandLine = "java -jar myTask.jar arg1 arg2 arg3";
        task.workspace = "/scratch/experiment/" + String.valueOf(task.key);
        task.error = "error output";
        task.output = "987654";
        task.status = "READY";
        return task;
    }
    
    public void start() {
        this.start = new Date();
    }
    
    public void end() {
        this.end = new Date();
    }
    
    private static long nextKey() {
        return globalKey++;
    }
}
